# celery_app.py
from datetime import datetime, timedelta

from celery import Celery
from celery.schedules import crontab

# 创建 Celery 应用，指定消息代理为 Redis
app = Celery('tasks', broker='redis://localhost:6379/0')

# 配置 Celery
app.conf.update(
    result_backend='redis://localhost:6379/0',  # 任务结果存储
    timezone='Asia/Shanghai',  # 时区
)

# 定义定时任务
@app.task
def my_task():
    print("定时任务执行了！")


# 配置定时任务调度
app.conf.beat_schedule = {
    'run-every-10-seconds': {
        'task': 'celery_app.my_task',  # 任务路径
        'schedule': 10.0,  # 每10秒执行一次
    },
    'run-every-minute': {
        'task': 'celery_app.my_task',
        'schedule': crontab(minute='*/1'),  # 每分钟执行一次
    },
}



# 动态添加一个一次性任务
# app.send_task('celery_app.my_task', eta=datetime.now() + timedelta(seconds=30))